Справочник по конфигурации | Tdb
Справочник Справочник по конфигурации

Справочник по конфигурации

В этом разделе описаны опции конфигурации, представленные в Tarantool DB.

app.roles.slow_log

Секция app.roles.slow_log задает опции конфигурации журнала медленных запросов.

Пример

roles_cfg:
  app.roles.slow_log:
    enable: true
    threshold: 3
    namespaces:
      - app

app.roles.slow_log.enable

Включить запись в журнал медленных запросов. По умолчанию запись будет включена для запросов через модуль CRUD.

Тип: boolean

Значение по умолчанию: false

app.roles.slow_log.threshold

Максимальное время выполнения запроса в секундах. При превышении этого значения запрос считается медленным и записывается в журнал.

Тип: number

Значение по умолчанию: 0.5

app.roles.slow_log.namespaces

Задать функции, для которых будет включено логирование медленных запросов.

Тип: table

Значение по умолчанию: {}

app.roles.tracing

Секция app.roles.tracing задает опции конфигурации трассировки.

Пример

roles_cfg:
  app.roles.tracing:
    enabled: true
    global_sample_rate: 0
    sample_rates:
      get_token_api: 2
      debug_1: 1
    base_url: 'http://tracing:9411/api/v2/spans'
    api_method: 'POST'
    report_interval: 1
    spans_limit: 1000

app.roles.tracing.enabled

Включить трассировку.

Тип: boolean

Значение по умолчанию: false

app.roles.tracing.global_sample_rate

Глобальный коэффициент частоты трассировки – трассируется каждый N-й вызов функции. Примеры:

10 – трассируется каждый десятый запрос; 1 – трассируются все запросы; 0 – все запросы не трассируются.

Примечание

Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду. Например, при нагрузке 1000 RPS, если функция start_span() вызывается при каждом обращении к базе, установите значение global_sample_rate = 1000.

Тип: integer

Значение по умолчанию: 0

app.roles.tracing.sample_rates

Коэффициенты частоты трассировки для заданных сегментов (spans). Значение опции – это таблица из пар ключ-значение, где

  • ключ – название сегмента;

  • значение – частота трассировки для этого сегмента.

Примечание

Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду. Например, при нагрузке 1000 RPS у конкретной функции, в которой вызывается функция start_span() с названием get_user(), установите в tracing.sample_rates ключ-значение {get_user: 1000}.

Тип: table

Значение по умолчанию: ‘{}’

Пример:

  sample_rates:
    get_user: 1000
    get_token: 10000

app.roles.tracing.base_url

URL-адрес сервера трассировки, куда отправляются данные трассировки.

Тип: string

Значение по умолчанию: ‘http://127.0.0.1:9411/api/v2/spans’

app.roles.tracing.api_method

HTTP-метод, используемый для отправки данных трассировки на сервер. Возможные значения: POST, GET, PUT.

Тип: string

Значение по умолчанию: ‘POST’

app.roles.tracing.report_interval

Интервал в секундах между отправкой на сервер собранных данных о трассировке.

Тип: integer

Значение по умолчанию: 10

app.roles.tracing.spans_limit

Максимальное количество сегментов (span) трассировки, которые могут быть сохранены локально на экземпляре Tarantool перед отправкой во внешнюю систему хранения результатов трассировки.

Тип: integer

Значение по умолчанию: 1000

config.storage

Секция config.storage определяет опции конфигурации узла как части централизованного хранилища конфигураций. Узнать больше: Запуск кластера Tarantool DB как централизованного хранилища конфигураций.

Пример

roles_cfg:
  config.storage:
    status_check_interval: 3

config.storage.status_check_interval

Интервал в секундах между проверками состояния сервера в кластере.

Тип: number

Значение по умолчанию: 5

roles.cooler

Доступно с версии 3.0.0.

Секция задает опции конфигурации для технологической роли roles.cooler. Опции используются для настройки архивации устаревших данных из спейсов memtx в спейсы на vinyl. Узнать больше: Архивация данных по их времени жизни.

Пример

roles_cfg:
  roles.cooler:
    user_sessions:
      expirationd:
        primary_key:  # Явное указание сканирования по первичному ключу
          full_scan_time: 300
          tuples_per_iteration: 100

        last_updated_index:  # Дополнительный индекс
          full_scan_time: 1000
          tuples_per_iteration: 200
          start_key: user_sessions_last_updated_start_key
          iterator_type: 'LT'

Здесь:

  • user_sessions – название спейса memtx, для которого настраивается архивация;

    • primary – название первичного ключа, по которому идет сканирование спейса;

    • last_updated_index – название дополнительного индекса, по которому идет сканирование спейса;

      • full_scan_time – время обхода спейса в секундах;

      • tuples_per_iteration – количество кортежей, которое проверяется за одну итерацию;

      • start_key – ключ, с которого начинается проход по индексу;

      • iterator_type – тип итератора для обхода спейса.

Кроме того, в конфигурации можно задать уровень логирования модуля cooler с помощью опции log.modules.cooler:

log:
  modules:
    cooler: 'info'

Значение опции по умолчанию: info. Возможные значения:

  • info – информация по запуску и завершению задачи архивации;

  • verbose – информация по запуску и завершению задачи архивации, а также статистика по задаче и логирование всех новых параметров архивации. Уровень verboseиспользуется, чтобы оценить работу архивации через логи;

  • debug – информация по каждому архивируемому кортежу. Уровень debug используется для отладки работы модуля, включать данный уровень надолго не рекомендуется.

Задать опцию log.modules.cooler можно на любом уровне конфигурации: на все экземпляры кластера, группу, набор реплик или отдельный экземпляр. Полное описание опции log.modules приведено в документации Tarantool.

roles.cooler.<name>

Название спейса memtx, для которого настраивается архивация. Обязательный параметр.

Тип: string

roles.cooler.<name>.expirationd.<index_name>

Название индекса, по которому идет сканирование спейса. На каждый индекс спейса может быть задана только одна задача архивации. Настройка этой опции позволяет избежать лишнего прохода по первичному ключу, если используется другой, более подходящий индекс (например, по last_updated или archived_at):

  • если секция expirationd.\<index_name\> присутствует и содержит только вторичные индексы, идет сканирование только по этим индексам. Задача по первичному ключу при этом не запускается;

  • если секция expirationd.\<index_name\> пропущена, по умолчанию идет сканирование по первичному ключу;

  • если требуется запуск по первичному ключу вместе с другими индексами или настройка параметров, необходимо явно указать секцию expirationd.\<index_name\> с названием первичного ключа в конфигурации (см. пример выше).

Тип: string

roles.cooler.<name>.expirationd.<index_name>.force

Если задано значение false, модуль expirationd обрабатывает задачи для всех типов спейсов только на экземпляре, доступном для записи. Он не обрабатывает задачи для нелокальных персистентных спейсов на экземпляре только для чтения. Это означает, что expirationd не будет запускать обработку задачи на реплике для обычных спейсов. Если задано значение true, принудительно включается обработка такой задачи.

Тип: boolean

Значение по умолчанию: false

roles.cooler.<name>.expirationd.<index_name>.force_allow_functional_index

Если задано значение false, модуль expirationd возвращает ошибку при итерации по функциональному индексу, поскольку это может привести к сбою. Вы можете пропустить ошибку, установив значение true, например при реализации собственной функции iterate_with.

Тип: boolean

Значение по умолчанию: false

roles.cooler.<name>.expirationd.<index_name>.full_scan_delay

Время ожидания между полными сканированиями в секундах. В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.

Тип: number

Значение по умолчанию: 1

roles.cooler.<name>.expirationd.<index_name>.full_scan_time

Время обхода спейса в секундах. Используется для расчета пауз между итерациями. Настройка регулирует скорость работы архивации данных. В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.

Тип: number

Значение по умолчанию: 3600

roles.cooler.<name>.expirationd.<index_name>.iterate_with

Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().

Тип: string

roles.cooler.<name>.expirationd.<index_name>.iteration_delay

Максимальное время ожидания между итерациями в секундах. В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.

Тип: number

Значение по умолчанию: 1

roles.cooler.<name>.expirationd.<index_name>.iterator_type

Тип итератора для обхода спейса: строка или константа box.index, например, EQилиbox.index.EQ`.

Тип: string или number

Значение по умолчанию: box.index.ALL

roles.cooler.<name>.expirationd.<index_name>.on_full_scan_error

Имя функции, которая вызывается после завершения полного сканирования из-за ошибки.

Тип: string

roles.cooler.<name>.expirationd.<index_name>.on_full_scan_success

Имя функции, которая вызывается после успешного завершения полной итерации сканирования.

Тип: string

roles.cooler.<name>.expirationd.<index_name>.process_while

Имя функции, которая вызывается перед проверкой каждого кортежа. Если функция возвращает false, задача останавливается до следующего полного сканирования. По умолчанию используется функция, которая всегда возвращает true.

Тип: string

roles.cooler.<name>.expirationd.<index_name>.start_key

Значение индекса кортежа, с которого начнется итерация. Если тип итератора — EQ, выполняется итерация по кортежам с этим значением индекса. Если параметр пропущен или равен нулю, будут проверены все кортежи.

Значение опции должно соответствовать одному из условий ниже:

  • значение имеет тот же тип данных, что и поле (или поля) индекса;

  • если в start_key передана функция, она возвращает тот же тип данных, что и поле (или поля) индекса.

Если в start_key передана строка, она интерпретируется как имя функции.

Тип: string или table

roles.cooler.<name>.expirationd.<index_name>.tuples_per_iteration

Количество кортежей, которое проверяется за одну итерацию. В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.

Тип: number

Значение по умолчанию: 1024

roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len

Предполагаемый размер спейса vinyl в первой итерации. Размер спейса vinyl невозможно подсчитать точно, поскольку многие операции (например, upsert) выполняются при обращении к данным. Поэтому следует подсчитывать размер кортежей при первом запуске – это позволит определить приблизительный размер спейса. Значение опции vinyl_assumed_space_len – это приблизительный размер спейса для первого запуска. В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.

Смотрите также: roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor.

Тип: number

Значение по умолчанию: 10⁷

roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor

Коэффициент для пересчёта размера спейса vinyl. Размер спейса vinyl невозможно подсчитать точно, поскольку многие операции (например, upsert) выполняются при обращении к данным. Поэтому следует подсчитывать размер кортежей при первом запуске – это позволит определить приблизительный размер спейса. vinyl_assumed_space_len – это приблизительное количество для первого запуска, а значение опции vinyl_assumed_space_len_factor – для следующего этапа. В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.

Тип: number

Значение по умолчанию: 2

roles.crud-<router_or_storage>

Секция задает опции конфигурации для технологических ролей roles.crud-router и roles.crud-storage. Опции используются для настройки сбора метрик модуля CRUD.

Узнать больше про роли, связанные с crud: roles.crud-router, roles.crud-storage.

Пример

roles_cfg:
  roles.metrics-export:
    http:
    - endpoints:
      - format: prometheus
        path: /metrics
      listen: 8081

groups:
  routers:
    replication:
      failover: manual
    sharding:
      roles: [router]
    roles:
      - roles.crud-router
      - roles.metrics-export
      - roles.dictionary-router
    roles_cfg:
      roles.crud-router:
        stats: true
        stats_driver: metrics
        stats_quantiles: true
        stats_quantile_tolerated_error: 0.001
        stats_quantile_age_buckets_count: 5
        stats_quantile_max_age_time: 180

roles.crud-<router_or_storage>.stats

Включить сбор метрик модуля CRUD.

По умолчанию сбор метрик отключен, так как их работа снижает производительность:

  • на 3-10% – при использовании локального драйвера;

  • 5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию;

  • до 20% – при использовании метрик, которые содержат квантили.

Тип: boolean

Значение по умолчанию: false

roles.crud-<router_or_storage>.stats_driver

Задать драйвер для хранения собранных метрик CRUD. Возможные значения:

  • local – использовать локальный драйвер;

  • metrics– использовать драйвер метрик.

Тип: string

Значение по умолчанию: ‘metrics’

Примечание

Включенный сбор метрик CRUD снижает производительность:

  • на 3-10% – при использовании локального драйвера;

  • 5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию.

roles.crud-<router_or_storage>.stats_quantiles

Включить квантили метрик. Опция crud.stats_quantiles работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').

Примечание

Вычисление квантилей снижает производительность на величину до 10%.

Тип: boolean

Значение по умолчанию: false

roles.crud-<router_or_storage>.stats_quantile_age_buckets_count

Количество сегментов квантилей summary. Увеличение значения сглаживает скользящее окно, но потребляет дополнительную память и CPU. Опция crud.stats_quantile_age_buckets_count работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').

Тип: number

Значение по умолчанию: 2

roles.crud-<router_or_storage>.stats_quantile_max_age_time

Время жизни сегмента (bucket) в секундах. Опция crud.stats_quantile_max_age_time работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').

Меньший срок жизни сегмента приводит к меньшему временному окну для квантилей, при этом больше ресурсов CPU используется на ротацию сегментов. Если у вашего приложения низкая частота запросов, увеличьте значение, чтобы уменьшить количество пробелов -nan в значениях квантилей.

Узнать больше про опцию crud.stats_quantile_max_age_time можно в документации Tarantool в разделе Мониторинг.

Тип: number

Значение по умолчанию: 60

roles.crud-<router_or_storage>.stats_quantile_tolerated_error

Задать допустимую погрешность квантиля. Опция stats_quantile_tolerated_error работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').

Узнать больше про опцию crud.stats_quantile_tolerated_error можно в документации Tarantool в разделе Мониторинг.

Тип: number

Значение по умолчанию: 0.001

roles.dictionary-<router_or_storage>

Секция задает опции конфигурации для технологических ролей roles.dictionary-router и roles.dictionary-storage. Опции используются для настройки работы словарей.

Пример

roles_cfg:
  roles.dictionary-router:
    update_instances_list_period: 300
  roles.dictionary-storage:
    batch_size: 1000
    worker_sleep_in_second: 60
    update_instances_list_period: 300
    connect_timeout: 3

roles.dictionary-<router_or_storage>.batch_size

Размер пакета для обмена между узлами в байтах.

Тип: number

Значение по умолчанию: 400

roles.dictionary-<router_or_storage>.worker_sleep_in_second

Интервал в секундах между опросами соседнего экземпляра на наличие новых данных.

Тип: number

Значение по умолчанию: 3

roles.dictionary-<router_or_storage>.update_instances_list_period

Доступно с версии 2.0.0.

Частота обновления списка узлов в секундах. Модуль хранит список узлов и отслеживает нездоровые узлы. При обнаружении нездорового узла модуль прекращает попытки связаться с ним до следующего обновления списка. Опция также позволяет отслеживать появление новых узлов в кластере.

Тип: number

Значение по умолчанию: 60

roles.dictionary-<router_or_storage>.connect_timeout

Доступно с версии 2.0.0.

Время ожидания установки соединения в секундах.

Тип: number

Значение по умолчанию: Неограниченно

roles.expirationd

Секция roles.expirationd задает опции конфигурации устаревания данных.

roles.expirationd.<name>

Название задачи по устареванию данных. Обязательный параметр.

Тип: string

Примеры конфигурации

Без пользовательской логики

roles_cfg:
  roles.expirationd:
    task_name1:
      space: messages
      options:
        args:
          lifetime_in_seconds: 15
          time_create_field: dt

Здесь:

  • task_name1 – название задачи по устареванию данных;

    • space – название спейса, по которому идет поиск устаревших кортежей;

    • options.args – дополнительные опции конфигурации:

      • lifetime_in_seconds – время жизни кортежа в секундах;

      • time_create_field – название поля, по которому проверяется время жизни кортежа.

Узнать больше: Автоматическое удаление устаревших кортежей из спейса.

С пользовательской логикой

roles_cfg:
  roles.expirationd:
    messages_expiration:
      space: messages
      is_expired: messages_is_tuple_expired
      is_master_only: true
      options:
        tuples_per_iteration: 100
        iterate_with: messages_iterate_with
        process_expired_tuple: messages_process_expired_tuple
        args:
          seconds: 5

Здесь:

  • messages_expiration – название задачи по устареванию данных;

    • space – название спейса, по которому идет поиск устаревших кортежей;

    • is_expired – название функции, которая получает кортеж и проверяет его срок жизни;

    • is_master_only – экспирация запущена только на master-узлах;

    • options – дополнительные опции конфигурации:

      • tuples_per_iteration – количество кортежей, которое проверяется за одну итерацию;

      • iterate_with – название функции, которая получает и обрабатывает устаревшие кортежи;

      • process_expired_tuple – название функции, возвращающей итератор для обхода спейса;

      • args – аргументы, доступные в функциях message_iterate_with и message_process_expired_tuple, seconds – время жизни кортежа. А также для поиска устаревших данных по умолчанию. В этом случае используются следующие поля:

        • lifetime_in_seconds - время жизни кортежа в секундах;

        • time_create_field - поле “время создания” для оценки времени жизни.

Узнать больше: Проверка устаревших кортежей в спейсе с помощью пользовательских функций.

roles.expirationd.<name>.is_expired

Название функции, которая получает кортеж и проверяет его срок жизни. Функция возвращает true, если время жизни кортежа истекло. Обязательный параметр.

Тип: function

roles.expirationd.<name>.is_master_only

Запустить работу с устаревающими кортежами только на master-узлах.

Тип: boolean

Значение по умолчанию: false

roles.expirationd.<name>.space

Название спейса или идентификатор спейса, по которому идет поиск устаревших кортежей. Обязательный параметр.

Тип: string или number

roles.expirationd.<name>.options

Дополнительные опции конфигурации.

Тип: table

Значение по умолчанию: {}

roles.expirationd.<name>.options.args

Дополнительные аргументы конфигурации. Доступные аргументы:

Тип time_create_field

Текущее время

число

clock.time()

целое число

clock.time()

беззнаковое

clock.time()

datetime

datetime.now()

Тип: table

Значение по умолчанию: {}

roles.expirationd.<name>.options.iterate_with

Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().

Тип: function

roles.expirationd.<name>.options.process_expired_tuple

Название функции, которая получает и обрабатывает устаревшие кортежи. Если опция не указана (или указан nil), устаревшие кортежи удаляются.

Тип: function

roles.expirationd.<name>.options.tuples_per_iteration

Количество кортежей, которое проверяется за одну итерацию. В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.

Тип: number

Значение по умолчанию: 1024

roles.tcf-<worker_or_coordinator>

Секция задает опции конфигурации для технологических ролей roles.tcf-worker и roles.tcf-coordinator. Опции определяют настройки кластеров, необходимые для взаимодействия с модулем Tarantool Clusters Federation (TCF). Полный список опций приведен в документации TCF. Задать конфигурацию кластера можно как через yaml-файл, так и в веб-интерфейсе Tarantool DB на вкладке TCF.

Узнать больше про технологические роли, связанные с TCF: roles.tcf-worker, roles.tcf-coordinator.

Found what you were looking for?
Feedback